//
//  Date_Extension.swift
//  CXSwiftWB
//
//  Created by meidaeriOS on 2017/6/5.
//  Copyright © 2017年 meidaer. All rights reserved.
//

import UIKit

extension Date {
    /// 根据制定字符串转换NSDate
    static func dataWithString(_ str: String) -> Date? {
        // 1.将发布微博的时间转换为NSDate
        // 1.1创建时间格式化对象
        let formatter = DateFormatter()
        // 1.2初始化时间格式化对象  "Tue May 31 17:46:55 +0800 2011"
        formatter.dateFormat = "EEE MM dd HH:mm:ss Z yyyy"
        formatter.locale = Locale(identifier: "en")
        
        // 1.3将发布微博的时间字符串转换为NSDate
        return formatter.date(from: str)
    }
    
    /// 返回格式化之后的时间字符串
    var desc: String
    {
        // 1.1创建时间格式化对象
        let formatter = DateFormatter()
        // 1.2初始化时间格式化对象  "Tue May 31 17:46:55 +0800 2011"
        formatter.locale = Locale(identifier: "en")
        
        // 日历
        let calendar = Calendar.current
        
        // 发布时间: 2014-11-12 00:00:00
        // 当前时间: 2015-10-11 00:00:00
        if calendar.isDateInToday(self)
        {
            // 2.1获取当前时间和发布时间之间的时间差
            let timeInterval = Int(Date().timeIntervalSince(self))
            
            if timeInterval < 60
            {
                return "刚刚"
            }else if timeInterval < 60 * 60
            {
                return "\(timeInterval / 60)分钟以前"
            }else if timeInterval < 60 * 60 * 24
            {
                return "\(timeInterval / (60 * 60))小时前"
            }
            
        }
        
        // 昨天
        var formatterStr = "HH:mm"
        let comps = (calendar as NSCalendar).components(NSCalendar.Unit.year, from: self, to: Date(), options: NSCalendar.Options(rawValue: 0))
        if calendar.isDateInYesterday(self)
        {
            formatterStr = "昨天 " + formatterStr
        }else if comps.year! < 1
        {
            // 一年以内
            formatterStr = "MM-dd " + formatterStr
        }else
        {
            // 更早时间
            formatterStr = "yyyy-MM-dd " + formatterStr
        }
        
        formatter.dateFormat = formatterStr
        return formatter.string(from: self)
    }

}
